package Thread;

/***
 *    停止线程思路
 *     1.  使用退出标志，使线程正常退出，也就是当run方法完成后线程终止。
 *     2.  使用stop方法强行终止线程（这个方法不推荐使用，因为stop和suspend、resume一样，也可能发生不可预料的结果）。
 *     3.  使用interrupt方法中断线程。
 *     4.  如果循环，那么就跳出循环
 *     By LIBOFEI
 * */
class StopThread implements Runnable{
    private Boolean flag = true;

    public void setStopThread(){
        this.flag = false;
    }

    public synchronized void run() {
        while(flag){
            try{
                System.out.println("线程运行中......");
                wait();
            }catch(Exception e){
               setStopThread();
            }
        }
    }
}


public class ThreadStopThread {

    public static void main(String[] args) {
         StopThread stopThread = new StopThread();
         Thread thread1 = new Thread(stopThread);
         Thread thread2 = new Thread(stopThread);
         thread1.start();
         thread2.start();
         int i = 0;
         while (true){
             System.out.println("thread main run.......");
             if(i==300){
                 // stopThread1.stopThread();
                 thread1.interrupt();
                 thread2.interrupt();
                 break;
             }
             i++;
         }
    }
}












